home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1986-07-15 | 662 b | 31 lines |
- IMPLEMENTATION MODULE Sort;
-
- FROM SortElemType IMPORT ElemType, compare;
-
- PROCEDURE Qsort (VAR A: ARRAY OF ElemType; N: CARDINAL);
-
- PROCEDURE sort (l, r: INTEGER); (* N. Wirth '86 *)
- VAR i, j : INTEGER;
- x, w : ElemType;
- BEGIN
- i:= l; j:= r;
- x:= A[(l+r) DIV 2];
- REPEAT
- WHILE compare(A[i],x) DO INC(i) END;
- WHILE compare(x,A[j]) DO DEC(j) END;
- IF i <= j
- THEN w:= A[i]; A[i]:= A[j]; A[j]:= w;
- INC(i); DEC(j)
- END;
- UNTIL i > j;
- IF l < j THEN sort(l,j) END;
- IF i < r THEN sort(i,r) END
- END sort;
-
- BEGIN
- IF N > HIGH(A)+1 THEN N:= HIGH(A)+1 END;
- sort(0,N-1)
- END Qsort;
-
- END Sort.